package pe.com.pgn.consolidadorventas.servidorcentral.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import pe.com.pgn.consolidadorventas.servidorcentral.service.UsuarioService;
import pe.com.pgn.consolidadorventas.servidorcentral.util.Constantes;
import pe.com.pgn.consolidadorventas.servidorcentral.web.domain.UsuarioSistema;

@Controller(value="inicioController")
public class InicioController {

	static Logger logger = Logger.getLogger(InicioController.class);
	
	@Autowired
	@Qualifier("usuarioServiceImpl")
	UsuarioService usuarioService;

	public InicioController(){
		
	}
	
	@RequestMapping(value="/login.php")
	public ModelAndView login(HttpServletRequest request, HttpServletResponse response){
		String vista = "login";
		HttpSession sesion=(HttpSession)request.getSession(true);
		String mensajeError = null;
		mensajeError = (String)sesion.getAttribute("loginMensajeError");
		if(mensajeError!=null){
			sesion.removeAttribute("loginMensajeError");
		}
		ModelAndView mav = new ModelAndView(vista);
		mav.addObject("mensajeError", mensajeError);
		return mav;
	}
	
	@RequestMapping(value="/iniciarSesion.php")
	public String iniciarSesion(HttpServletRequest request, HttpServletResponse response){
		String vista = "login";
		String usuario = request.getParameter("usuario");
		String clave = request.getParameter("clave");
		String mensajeError = "";
		HttpSession sesion=(HttpSession)request.getSession(true);
		if(usuario.trim().equals("") || clave.trim().equals("")){
			mensajeError = "Los campos no deben estar vacios";
			sesion.setAttribute("loginMensajeError",mensajeError);
		}else{

			int rpta = usuarioService.autenticar(usuario, clave);
			//int rpta = 1;
			if(rpta==Constantes.LDAP_AUTENTICACION_CORRECTA){
				UsuarioSistema u = new UsuarioSistema();
				u.setUsername(usuario);
				sesion.setAttribute("usuarioSistema",u);
				vista = "consultaEnvios";
			}else{
				if(rpta == Constantes.LDAP_DATOS_INCORRECTOS){
					mensajeError = "Usuario y clave no validos";
				}
				
				if(rpta == Constantes.LDAP_NO_HAY_DATOS_USUARIO){
					mensajeError = "No se encuentran datos del usuario "+usuario;
				}
				
				if(rpta == Constantes.LDAP_ERROR_CONEXION){
					mensajeError = "Error en conexion";
				}
				
				if(rpta == Constantes.LDAP_EXCEPCION_GENERAL){
					mensajeError = "Error en conexion";
				}
				sesion.setAttribute("loginMensajeError",mensajeError);
			}
		}
		return "redirect:"+vista+".php";
	}
	
	@RequestMapping(value="/cerrarSesion.php")
	public String cerrarSesion(HttpServletRequest request, HttpServletResponse response){
		HttpSession sesion=(HttpSession)request.getSession(true);
		UsuarioSistema u = (UsuarioSistema)sesion.getAttribute("usuarioSistema");
		if(u!=null){
			sesion.invalidate();
		}
		return "redirect:login.php";
	}
	
}
